#pragma once

#include "unit.h"

class CFlashLight;
class CEmitter;
class COwnedLight;

class CPlayer : public CUnit
{
private:
	bool bBattery;
	bool bMana;
	float fDamageTaken;
	int nManaPool;
	CFlashLight* pFlashlight;
	int nKeys;
	char chCrystals;
	int nCurrCrystal;
	float fInvisTimer;
	CEmitter* pBloodSplatter;
	COwnedLight* pLight;
	int nWalkingSfxID;
	int nCastingSfxID;
	int nHitSfxID;
	int nGruntSfxID;
	
public:
	bool GetBattery() const { return bBattery; }
	bool GetMana() const { return bMana; }
	float GetDamageTaken() const { return fDamageTaken; }
	int GetManaPool() const { return nManaPool; }
	CFlashLight* GetFlashlight() const { return pFlashlight; }
	int GetKeys() const { return nKeys; }
	char GetCrystals() const { return chCrystals; }
	int GetCurrCrystal() const { return nCurrCrystal; }
	float GetInvisTimer() const { return fInvisTimer; }
	CEmitter* GetBloodSplatter() const { return pBloodSplatter; }
	COwnedLight* GetLight() const { return pLight; }
	int GetWalkingSfxID() const { return nWalkingSfxID; }
	int GetCastingSfxID() const { return nCastingSfxID; }
	int GetHitSfxID() const { return nHitSfxID; }
	int GetGruntSfxID() const { return nGruntSfxID; }

	void SetBattery(bool val) { bBattery = val; }
	void SetMana(bool val) { bMana = val; }
	void SetDamageTaken(float val) { fDamageTaken = val; }
	void SetManaPool(int val) { nManaPool = val; }
	void SetFlashlight(CFlashLight* val) { pFlashlight = val; }
	void SetKeys(int val) { nKeys = val; }
	void SetCrystals(char val) { chCrystals = val; }
	void SetCurrCrystal(int val) { nCurrCrystal = val; }
	void SetInvisTimer(float val) { fInvisTimer = val; }
	void SetBloodSplatter(CEmitter* val) { pBloodSplatter = val; }
	void SetLight(COwnedLight* val) { pLight = val; }
	void SetWalkingSfxID(int val) { nWalkingSfxID = val; }
	void SetCastingSfxID(int val) { nCastingSfxID = val; }
	void SetHitSfxID(int val) { nHitSfxID = val; }
	void SetGruntSfxID(int val) { nGruntSfxID = val; }

	virtual void Update(float fElapsedTime) override;

	void Input();
	void CastSpell();
	void UseBattery();
	void UsePotion(float fTimer);
};

